敏捷開發過程中,『增量』與『迭代』是最常被人拿來談的內容之一。很多人都會問,到底為什麼非得做增量與迭代不可?這裡,我想要簡短地用數學的方法來顯示他的好處。
首先,在軟體開發過程中,開發人員的『工時』應該是主要成本之一,然而,隨著產品成長,模組和模組之間的相依性也會越來越重。雖然我們都知道,『解耦合』是很重要的工作,但在現實層面,你還是無法完全避免他。於是,當產品越大,一個功能的棄用或修正,就會或多或少影響到另外一個功能。
我們來做一個非常非常假的假設。這是為了讓數據看起來容易懂。
假設整合或創建模組的難度,隨著時間x的經過,呈現線性成長,那麼也許每日的開發成本可以非常粗略地表示成:
y=2x
要知道,人不能通靈,再精細縝密的規劃也有出錯的一天,就算不出錯,客戶也有可能因為任何原因而要求重做或修正。這時,被浪費掉的沈沒成本就是他的積分了:
y=x^2 + c
如果,我們能夠定期(譬如每兩週)回顧審視並演示,隨著客戶的需求而修正,假設我們有夠笨拙,每次demo客戶都不喜歡,都要求砍掉重做(當然,這是很極端的例子,世上也許不會有這種客戶),那麼,我們一整年下來,被丟掉的沈沒成本就是
26(14^2 + c)
萬一你採取瀑布式開發,最後一年後又不幸的被要求重做呢?答案是
365^2 + c
到這裡,您可以自己計算了吧?
當然,這是因為我們用了很簡化的模型來模擬複雜的軟體開發流程,但是您還是可以從數字上看到兩種方式可能對您的成本造成的影響。
路怎麼走,您可以自己決定了 :)